In the field of computing, memory management refers to allocating, protecting, and deallocating (e.g., reclaiming) memory areas that are used for application processing and operating system operations. Application processing and operating system operations may include threads, processes, or applications and may be generally referred to as “execution units,” Different types of memory exist in a computer system and include non-persistent and persistent storage that may have different speeds with respect to access time. Memory types may be conceptualized as a hierarchy of storage. Generally, the lower a storage is in the hierarchy, the lesser its bandwidth and the greater its access latency (i.e., time required to access) is from a central processing unit (CPU). This traditional division of storage to primary, secondary, tertiary and off-line storage may also be guided by cost per amount of storage with lower latency bulk storage representing less expensive (monetarily). Even though bulk storage may be less expensive from a monetary perspective, it may have a higher cost from a run-time compute perspective (e.g., run-time access and performance cost) because it takes more time to transfer data to and from such storage.
As used in this disclosure, “memory” or “memory storage” may refer to semiconductor storage read-write random-access memory, typically DRAM (dynamic RAM) or other forms of fast but temporary storage. “Storage” (e.g., without a qualifier such as “memory” or “primary”) typically refers to storage devices and their media not directly accessible by the CPU (e.g., secondary or tertiary storage), typically hard disk drives, optical disc drives, and other devices, slower than RAM but non-volatile and “persistent” (retaining contents when powered down). In this context, directly accessible refers to being accessed by the processing unit without going through a device controller or off-board communication bus to gain access to data stored within the directly accessible memory. That is, the memory is accessible to the processing unit using circuitry that allows direct access for reading and writing. However, in some instances there may be a memory controller that assists the CPU in directly accessing memory areas. In this context, a memory controller should not be considered a device controller for the purposes of this distinction with respect to direct access. Disclosed examples reference memory allocation for fast access memory such as RAM that is directly accessible to a CPU (or another processor type). However, similar techniques may also be used in certain types of storage allocation implementations. Historically, memory has also been referred to as core memory, main memory, real storage, or internal memory. Meanwhile, non-volatile storage devices have been referred to as, secondary storage, external memory, or auxiliary/peripheral storage.